/**
 * 将指定层级的嵌套对象扁平化为点分隔的键值对，但保留数组和子对象的原始结构
 * @param {Object} nestedObject - 嵌套的对象
 * @param {string} targetKey - 目标层级的键名，如 'businessEditVo'
 * @returns {Object} - 扁平化的对象
 */
export function flattenSpecificLevel(obj, fieldName) {
  const result = {}

  // 如果字段不存在，直接返回空对象
  if (!obj[fieldName]) {
    return result
  }

  const fieldValue = obj[fieldName]

  if (Array.isArray(fieldValue)) {
    // 如果字段值是数组
    fieldValue.forEach((item, index) => {
      if (typeof item === 'object' && item !== null) {
        // 如果数组项是对象，逐键处理
        Object.keys(item).forEach((key) => {
          result[`${fieldName}[${index}].${key}`] = item[key]
        })
      } else {
        // 如果数组项是基本类型，直接添加
        result[`${fieldName}[${index}]`] = item
      }
    })
  } else if (typeof fieldValue === 'object' && fieldValue !== null) {
    // 如果字段值是对象
    Object.keys(fieldValue).forEach((key) => {
      result[`${fieldName}.${key}`] = fieldValue[key]
    })
  } else {
    // 如果字段值是基本类型，直接添加
    result[fieldName] = fieldValue
  }

  return result
}
